

var fs = require("fs"); //文件系统  file system  => 可以读取,写入,删除文件  新增/删除文件夹   重命名文件和文件夹
var path = require("path");

// console.log(fs);

/*
    fs.readFile(url , encode , callback) 读取文件内容
        url 为需要读取的文件路径
        ecnode 需要采用哪种字符编码集来进行内容读取  (utf-8,binary 二进制)
        callback 当文件读取完毕之后的回调函数
                该回调函数会接收两个形参   error,data
                第一个形参为读取失败时的错误信息
                第二个形参为读取成功时的文本内容
*/

// 报错:  fs读取文件时,相对路径默认相对于终端启动的路径拼接位相对路径
// fs.readFile("../data/1.txt", "utf-8", function (err, data) {
//     if (!err) {
//         console.log("读取成功", data);
//     } else {
//         console.log("读取失败", err);
//     }
// })


// fs.readFile("./data/1.txt", "utf-8", function (err, data) {
//     if (!err) {
//         console.log("读取成功", data);
//     } else {
//         console.log("读取失败", err);
//     }
// })

// fs.readFile(path.join(__dirname, "../data/1.txt"), "utf-8", function (err, data) {
//     if (!err) {
//         console.log("读取成功", data);
//     } else {
//         console.log("读取失败", err);
//     }
// })

// 同步版  => 成功就返回结果,失败直接抛错
// var result = fs.readFileSync(path.join(__dirname, "../data/1.txt"), "utf-8");
// console.log(result);


/*
    fs.writeFile(filename,data,[options],callback)
    filename  String 文件名 (写入的文件路径 )
    data      String|buffer  //需要写入的数据
    option    Object
                encoding  String |null   default='utf-8'
                flag      String         default='w' //1、默认"w"(直接写入数据，会清空原有数据)  2、{ 'flag': 'a' } 可重复写入数据
                flag属性 (规定写入模式)   write / append
                    w ：写入文件，文件不存在则创建，存在则清空(覆盖)；
                    wx ：和w一样，但是文件存在时会报错；
                    w+ ：读取并写入文件，文件不存在则创建，存在则清空；
                    wx+ ：和w+一样，但是文件存在时会报错；
                    a ：以追加方式写入文件，文件不存在则创建,存在就追加；
                    ax ：和a一样，但是文件存在时会报错；
                    a+ ：读取并追加写入文件，文件不存在则创建；
                    ax+ ：和a+一样，但是文件存在时会报错。
    callback 动作执行完后的回调函数

*/

// 写入文件

// fs.writeFile(path.join(__dirname, "../data/2.txt"), "你好星期一", { encoding: "utf-8", flag: "w" }, function (err) {
//     if (!err) {
//         console.log("写入成功");
//     } else {
//         console.log("写入失败", err);
//     }
// })

/* fs.writeFile(path.join(__dirname, "../data/1.txt"), "你好星期一", { encoding: "utf-8", flag: "a" }, function (err) {
    if (!err) {
        console.log("写入成功");
    } else {
        console.log("写入失败", err);
    }
}) */

// .appendFile(url,content,option,callback) 向已存在的文件的最后添加新的内容 (flag:"a")
//   url为需要追加内容的文件所在路径
//   content 为需要追加到文件的内容

/* fs.appendFile(path.join(__dirname, "../data/1.txt"), "你好星期一", { encoding: "utf-8" }, function (err) {
    if (!err) {
        console.log("写入成功");
    } else {
        console.log("写入失败", err);
    }
}) */


/* .unlink(url , callback) 删除文件
    url为需要被删除的文件路径
    callback 为操作执行完毕后的回调函数 */

/* fs.unlink(path.join(__dirname, "../data/2.txt"), function (err) {
    if (!err) {
        console.log("删除成功");
    } else {
        console.log("删除失败", err);
    }
}) */


// .exists(url, callback)  判断文件或文件夹是否存在(异步)
// .existsSync(url, callback)  判断文件或文件夹是否存在(同步)

var result = fs.existsSync(path.join(__dirname, "../data/2.txt"));
console.log(result);